From 0becb32e43840e7d5639d64b0cb720a1df7a4166 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Wed, 16 Aug 2006 11:55:26 +0100 Subject: [PATCH] [HVM] Fix the HVM hypercall issue when paging is not enabled yet on 64bit host. Signed-off-by: Xin Li --- xen/arch/x86/shadow_public.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/shadow_public.c b/xen/arch/x86/shadow_public.c index e64f29d1ca..c282698870 100644 --- a/xen/arch/x86/shadow_public.c +++ b/xen/arch/x86/shadow_public.c @@ -1104,6 +1104,9 @@ int __shadow_mode_enable(struct domain *d, unsigned int mode) { struct vcpu *v; int new_modes = (mode & ~d->arch.shadow_mode); +#if defined(CONFIG_PAGING_LEVELS) + int initial_paging_levels = 3; +#endif // Gotta be adding something to call this function. ASSERT(new_modes); @@ -1112,8 +1115,10 @@ int __shadow_mode_enable(struct domain *d, unsigned int mode) ASSERT(!(d->arch.shadow_mode & ~mode)); #if defined(CONFIG_PAGING_LEVELS) - if(!shadow_set_guest_paging_levels(d, - CONFIG_PAGING_LEVELS)) { + if ( CONFIG_PAGING_LEVELS == 2 ) + initial_paging_levels = CONFIG_PAGING_LEVELS; + if ( !shadow_set_guest_paging_levels(d, + initial_paging_levels) ) { printk("Unsupported guest paging levels\n"); domain_crash_synchronous(); /* need to take a clean path */ } -- 2.30.2